--
-- Nuevas conversiones para campos con dieresis
--

CREATE OR REPLACE FUNCTION public.str_sin_acentos(
	text)
    RETURNS character varying
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE 
AS $BODY$
/* Elimina los acentos y signos raros */
DECLARE
CadenaEntrada ALIAS FOR $1;
vCadenaSalida varchar;
BEGIN
vCadenaSalida:= CadenaEntrada;
-- Migrados desde excel. Algunos ocupan dos posiciones.
vCadenaSalida:= replace(vCadenaSalida, chr(9), ' ');  -- Se reemplaza tab por espacio.
vCadenaSalida:= replace(vCadenaSalida, chr(170), 'ro.');  -- El circulito de Nro.
vCadenaSalida:= replace(vCadenaSalida, chr(176), 'ro.');  -- El circulito de Nro.
vCadenaSalida:= replace(vCadenaSalida, chr(186), 'ro.');  -- El circulito de Nro.
vCadenaSalida:= replace(vCadenaSalida, chr(188), ' 1/4');  -- Simbolo de un cuarto, se deja un espacio al principio para separarlo del otro numero.
vCadenaSalida:= replace(vCadenaSalida, chr(189), ' 1/2');  -- Simbolo de un medio, se deja un espacio al principio para separarlo del otro numero..
vCadenaSalida:= replace(vCadenaSalida, chr(193), 'A');
vCadenaSalida:= replace(vCadenaSalida, chr(194) || chr(114), '.');   -- El circulito de Nro.
vCadenaSalida:= replace(vCadenaSalida, chr(194) || chr(160), 'a');
vCadenaSalida:= replace(vCadenaSalida, chr(194) || chr(161), 'i');
vCadenaSalida:= replace(vCadenaSalida, chr(194) || chr(170), '.');   -- El circulito de Nro.
vCadenaSalida:= replace(vCadenaSalida, chr(194) || chr(176), '.');   -- El circulito de Nro.
vCadenaSalida:= replace(vCadenaSalida, chr(194) || chr(186), '.');   -- 
vCadenaSalida:= replace(vCadenaSalida, chr(195) || chr(145), 'N');   -- enie mayuscula

vCadenaSalida:= replace(vCadenaSalida, chr(196), 'A');
vCadenaSalida:= replace(vCadenaSalida, chr(201), 'E');
vCadenaSalida:= replace(vCadenaSalida, chr(203), 'E');

vCadenaSalida:= replace(vCadenaSalida, chr(205), 'I');
vCadenaSalida:= replace(vCadenaSalida, chr(207), 'I');

vCadenaSalida:= replace(vCadenaSalida, chr(209), 'N');  -- enie mayuscula
vCadenaSalida:= replace(vCadenaSalida, chr(211), 'O');
vCadenaSalida:= replace(vCadenaSalida, chr(214), 'O');
vCadenaSalida:= replace(vCadenaSalida, chr(216), 'DIAM.');  -- Una O con barra atravesada. En gral. indica diametro.
vCadenaSalida:= replace(vCadenaSalida, chr(218), 'U');
vCadenaSalida:= replace(vCadenaSalida, chr(220), 'U');

vCadenaSalida:= replace(vCadenaSalida, chr(225), 'a');
vCadenaSalida:= replace(vCadenaSalida, chr(228), 'a');

vCadenaSalida:= replace(vCadenaSalida, chr(233), 'e');
vCadenaSalida:= replace(vCadenaSalida, chr(235), 'e');

vCadenaSalida:= replace(vCadenaSalida, chr(237), 'i');

vCadenaSalida:= replace(vCadenaSalida, chr(238) || chr(151) || chr(174), '? ');  -- No queda claro que signo es. Ocupa tres posiciones. Vino de excel.

vCadenaSalida:= replace(vCadenaSalida, chr(239) || chr(189) || chr(166), 'ro. ');  -- El numerito, ocupa tres posiciones. Cuando viene de excel.
vCadenaSalida:= replace(vCadenaSalida, chr(241), 'n');    -- enie
vCadenaSalida:= replace(vCadenaSalida, chr(243), 'o');
vCadenaSalida:= replace(vCadenaSalida, chr(246), 'o');

vCadenaSalida:= replace(vCadenaSalida, chr(250), 'u');
vCadenaSalida:= replace(vCadenaSalida, chr(252), 'u');    --dierisis
vCadenaSalida:= replace(vCadenaSalida, chr(220), 'U');    --dierisis
vCadenaSalida:= replace(vCadenaSalida, chr(203), 'E');    --dierisis
vCadenaSalida:= replace(vCadenaSalida, chr(248), 'o');    --Simbolo de diámetro 
vCadenaSalida:= replace(vCadenaSalida, chr(210), 'O');    --O con acento al reves
vCadenaSalida:= replace(vCadenaSalida, '&', 'y');    --O con acento al reves



RETURN vCadenaSalida;

END;
$BODY$;

ALTER FUNCTION public.str_sin_acentos(text)
    OWNER TO abacouser;
--   
SELECT aaversion('516.01','516.00');
--    


